自定义斜杠命令是 Claude Code 中最强大的自动化功能之一。通过将常用的提示词保存为可重用的命令,你可以用简单的 /命令名 语法快速调用复杂的工作流程。
什么是自定义斜杠命令#
自定义斜杠命令本质上是保存的提示词模板,存储为 Markdown 文件。当你调用一个斜杠命令时,文件内容会作为提示词发送给 Claude,触发预定义的工作流程。
核心特性#
- 简单易用:只需创建 Markdown 文件即可定义命令
- 版本控制:命令文件可以纳入 Git 管理,与团队共享
- 参数支持:可以接收动态参数,实现灵活的命令调用
- 工具集成:可以执行 Bash 命令、引用文件内容
- 命名空间:支持分层组织,避免命令冲突
命令类型与作用域#
Claude Code 支持三种类型的自定义命令:
1. 项目级命令(Project Commands)#
- 位置:
.claude/commands/ - 作用域:仅在当前项目中可用
- 优先级:最高(会覆盖同名的个人命令)
- 调用方式:
/project:命令名或/命令名 - 适用场景:项目特定的工作流程,可与团队共享
bash
2. 个人级命令(Personal Commands)#
- 位置:
~/.claude/commands/ - 作用域:所有项目中可用
- 优先级:中等
- 调用方式:
/命令名 - 适用场景:个人常用的通用工作流程
bash
3. 插件命令(Plugin Commands)#
- 位置:插件的
commands/目录 - 作用域:插件范围
- 优先级:最低(自动添加命名空间)
- 调用方式:
/插件名__命令名 - 适用场景:插件提供的专用功能
创建第一个自定义命令#
让我们从一个简单的例子开始,创建一个代码审查命令。
基础命令示例#
创建文件 .claude/commands/review.md:
markdown
使用方式:
bash
命令参数#
自定义命令支持动态参数,让命令更加灵活。
参数语法#
$ARGUMENTS:捕获所有参数$1,$2,$3...:位置参数$@:所有参数的数组形式
带参数的命令示例#
创建文件 .claude/commands/fix-issue.md:
markdown
使用方式:
bash
多参数命令示例#
创建文件 .claude/commands/compare.md:
markdown
使用方式:
bash
执行 Bash 命令#
自定义命令可以执行 Shell 命令并将输出嵌入到提示词中。
语法#
使用 ! 前缀执行命令:
markdown
Git 状态命令示例#
创建文件 .claude/commands/git-status.md:
markdown
测试运行命令示例#
创建文件 .claude/commands/test.md:
markdown
文件引用#
使用 @ 语法可以将文件内容包含到命令中。
语法#
markdown
代码审查命令示例#
创建文件 .claude/commands/review-file.md:
markdown
使用方式:
bash
Frontmatter 配置#
命令文件可以使用 YAML frontmatter 配置元数据和行为。
可用字段#
| 字段 | 必需 | 说明 |
|---|---|---|
description | 否 | 命令的简短描述,显示在命令列表中 |
argument-hint | 否 | 参数提示文本,帮助用户了解期望的参数格式 |
allowed-tools | 否 | 允许使用的工具列表(逗号分隔) |
model | 否 | 指定使用的模型:sonnet、opus、haiku |
disable-model-invocation | 否 | 设为 true 时,仅执行脚本而不调用 Claude |
完整配置示例#
创建文件 .claude/commands/deploy.md:
markdown
命令组织与命名空间#
随着命令数量增加,良好的组织结构变得重要。
目录结构#
使用子目录创建命名空间:
bash
命名规范#
推荐使用动词-名词格式:
/project:git:commit- Git 提交/project:test:run- 运行测试/project:deploy:staging- 部署到预发布环境/project:docs:generate- 生成文档
实用命令示例#
1. 智能提交命令#
创建文件 .claude/commands/git/smart-commit.md:
markdown
type(scope): subject
body
footer
bash
2. 代码重构命令#
创建文件 .claude/commands/refactor.md:
markdown
3. 文档生成命令#
创建文件 .claude/commands/docs/generate.md:
markdown
4. 安全审计命令#
创建文件 .claude/commands/security/audit.md:
markdown
5. 性能分析命令#
创建文件 .claude/commands/performance/analyze.md:
markdown
高级技巧#
1. 组合多个命令#
创建文件 .claude/commands/workflow/pre-commit.md:
markdown
2. 条件执行#
创建文件 .claude/commands/test/smart-test.md:
markdown
3. 交互式命令#
创建文件 .claude/commands/interactive/feature.md:
markdown
命令文档化#
创建一个帮助命令来列出所有可用的自定义命令。
创建文件 .claude/commands/help.md:
markdown
最佳实践#
1. 命令设计原则#
- 单一职责:每个命令专注于一个明确的任务
- 清晰命名:使用描述性的命令名称
- 参数验证:在命令中包含参数检查逻辑
- 错误处理:考虑异常情况并提供友好的错误信息
- 文档完善:使用
description和argument-hint提供清晰的说明
2. 安全考虑#
- 工具权限:使用
allowed-tools限制命令可以使用的工具 - 命令审查:定期审查自定义命令,确保没有安全风险
- 敏感信息:避免在命令中硬编码密码、API 密钥等敏感信息
- 输入验证:对用户输入进行验证,防止命令注入
3. 性能优化#
- 避免重复:将常用的逻辑提取为独立命令
- 缓存结果:对于耗时的操作,考虑缓存结果
- 并行执行:在可能的情况下并行执行独立的任务
- 超时设置:为长时间运行的命令设置合理的超时
4. 团队协作#
- 版本控制:将
.claude/commands/目录纳入 Git 管理 - 命名规范:团队统一命令命名规范
- 文档维护:保持命令文档的更新
- 代码审查:对新增或修改的命令进行审查
常见问题#
1. 命令不生效#
问题:创建了命令文件,但无法调用
解决方案:
- 检查文件路径是否正确(
.claude/commands/) - 确认文件扩展名为
.md - 重启 Claude Code 或重新加载配置
- 使用
/help查看命令是否被识别
2. 参数传递问题#
问题:参数没有正确传递到命令中
解决方案:
- 使用
$ARGUMENTS捕获所有参数 - 使用
$1,$2等捕获位置参数 - 在命令中添加调试输出:
参数内容:$ARGUMENTS
3. Bash 命令执行失败#
问题:! 命令无法执行
解决方案:
- 在 frontmatter 中添加
allowed-tools: Bash - 检查命令语法是否正确
- 确认命令在当前环境中可用
- 使用完整路径或检查 PATH 环境变量
4. 文件引用失败#
问题:@ 语法无法读取文件
解决方案:
- 在 frontmatter 中添加
allowed-tools: Read - 检查文件路径是否正确(相对于项目根目录)
- 确认文件存在且有读取权限
与其他功能的集成#
1. 与 MCP 集成#
MCP 服务器可以通过特殊的命名模式暴露提示词作为斜杠命令:
bash
例如:
bash
2. 与 Hooks 集成#
可以在 Hooks 中自动触发自定义命令:
json
3. 与 Skills 集成#
自定义命令可以调用 Skills 提供的功能,实现更复杂的工作流程。
小结#
自定义斜杠命令是 Claude Code 中强大的自动化工具,通过合理设计和组织命令,可以显著提升开发效率。关键要点:
- 简单开始:从简单的命令开始,逐步增加复杂度
- 合理组织:使用命名空间和目录结构组织命令
- 充分利用:结合参数、Bash 执行、文件引用等特性
- 团队共享:将命令纳入版本控制,与团队共享最佳实践
- 持续优化:根据实际使用情况不断改进命令
通过掌握自定义斜杠命令,你可以将重复的工作流程自动化,让 Claude Code 成为更加高效的开发助手。